package com.njchy.statistics.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njchy.statistics.entity.RiverInfo;
import com.njchy.statistics.entity.dto.MatchIncomingPointsDTO;
import com.njchy.statistics.entity.dto.PolygonListParamDTO;
import com.njchy.statistics.entity.dto.RiverSumDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 映射层。
 *
 * @author 测绘院
 * @since 2025年08月25日
 */

public interface AllMapper extends BaseMapper {

    /**
     * 动态传入表名查询数据
     *
     * @param tableName 表名参数
     * @return 查询结果
     */
    List<Map<String, Object>> queryTableData(@Param("tableName") String tableName);


    /**
     * 根据动态表名和点列表查询匹配结果
     *
     * @param tableName 动态表名
     * @param pointList 点列表
     * @return 匹配结果
     */
    List<Map<String, Object>> queryByTableAndPoints(
            @Param("tableName") String tableName,
            @Param("pointList") List<String> pointList
    );


    /**
     * excel数据导入
     * 批量插入或更新（替换原batchInsert方法）
     *
     * @param riverInfoList
     */
    void batchInsertOrUpdate(List<RiverInfo> riverInfoList);


    /**
     * 统计河段的总和
     */
    RiverSumDTO selectSum();


    /**
     * 获取统计列表
     */

    List<RiverInfo> selecRivertList();


    /**
     * 范围面数据匹配
     *
     * @param param
     * @return
     */

    Map<String, Object> areaStatisticDifference(@Param("param") PolygonListParamDTO param);


    /**
     * 单个点位的查询数据匹配
     *
     * @param tableName
     * @param point
     * @return
     */
    List<Map<String, Object>> singleTableData(
            @Param("tableName") String tableName,
            @Param("point") String point
    );


}
